#include<stdio.h>
#include<stdlib.h>
#include<memory.h>

int dp[11][2048];
int table[2048][2048];
int m,n,start;

void dfs(int offset,int now)
{
    if(offset>=n)
    {
        table[start][now]=1;
        return;
    }

    if((now & 1<<offset)>0)
    {
        dfs(offset+1,now & ~(1<<offset));
    }
    else
    {
        dfs(offset+1,now | (1<<offset));

        if(offset< (n-1) && (now & 1<<(offset+1))==0)
        {
            dfs(offset+2,now);
        }
    }
}

int main()
{
    while(scanf("%d %d",&m,&n) && m>0 && n>0)
    {
        if((m*n)%2==1)
        {
            printf("%d\n",0);
            continue;
        }
        memset(dp,0,sizeof(dp));
        memset(table,0,sizeof(table));

        int i,j,k;
        for(start=0;start<(1<<n);start++)
        {
            dfs(0,start);
        }

        dp[0][0]=1;
        for(i=1;i<m+1;i++)
            for(j=0;j<(1<<n);j++)
                for(k=0;k<(1<<n);k++)
                {
                    if(table[k][j]==1)
                    {
                        dp[i][j]+=dp[i-1][k];
                    }
                }

        printf("%d\n",dp[m][0]);
    }
}
